
package main.old.new_2023.last.month_9;


/**
 * @Description: todo 2582. 递枕头
 * n 个人站成一排，按从 1 到 n 编号。
 * 最初，排在队首的第一个人拿着一个枕头。每秒钟，拿着枕头的人会将枕头传递给队伍中的下一个人。
 * 一旦枕头到达队首或队尾，传递方向就会改变，队伍会继续沿相反方向传递枕头。
 * 例如，当枕头到达第 n 个人时，TA 会将枕头传递给第 n - 1 个人，然后传递给第 n - 2 个人，依此类推。
 * 给你两个正整数 n 和 time ，返回 time 秒后拿着枕头的人的编号。
 *
 * todo 2591. 将钱分给最多的儿童
 * 给你一个整数 money ，表示你总共有的钱数（单位为美元）和另一个整数 children ，表示你要将钱分配给多少个儿童。
 * 你需要按照如下规则分配：
 * 所有的钱都必须被分配。
 * 每个儿童至少获得 1 美元。
 * 没有人获得 4 美元。
 * 请你按照上述规则分配金钱，并返回 最多 有多少个儿童获得 恰好 8 美元。如果没有任何分配方案，返回 -1 。
 *
 * @Author: Take-off
 * @Date: 1:00 PM 2023/6/
 * @Param:
 * @return:
 **/
public class Solution0926 {

    //将钱分给最多的儿童
    public int distMoney(int money, int children) {
        //全部分一块，后面判断多少个7元
        if (money < children) {
            return -1;
        }
        money -= children;
        int cnt = Math.min(money / 7, children);
        money -= cnt * 7;
        children -= cnt;
        //两种情况 钱多了，那么最后一位就要拿所有得钱，第二种 只剩1位而且还剩3块，那就不能
        if ((children == 0 && money > 0) || (children == 1 && money == 3)) {
            cnt--;
        }
        return cnt;

    }

    //递枕头
    public int passThePillow(int n, int time) {
        //2n-2 是一个循环
        int temp = time % (2 * n - 2);
        if (temp > n-1){
            temp = n - temp +n -1;
        }else {
            temp = temp + 1;
        }
        return temp;
    }


}
